import { koiMsgError, koiMsgSuccess } from "@/utils/koi";
// 状态验证
// 状态验证
export function statusMap(data: any) {
  const statusMap = {
    0: "未支付",
    1: "未创建",
    2: "已启动",
    3: "关机",
    4: "重装中",
    5: "正在创建快照",
    6: "正在恢复快照"
  };
  return statusMap[data] || "未知状态";
}

// 返回状态颜色
export function statusColor(data: any) {
  const statusMap = {
    0: "danger", // 未支付
    1: "warning", // 未创建
    2: "success", // 已启动
    3: "secondary", // 关机
    4: "info", // 重装中
    5: "primary", // 正在创建快照
    6: "info" // 正在恢复快照
  };
  return statusMap[data] || "default"; // 默认颜色类名
}

// 返回数据卷状态
export function volumeStatus(data: any) {
  const statusMap = {
    0: "未创建",
    1: "未链接",
    2: "已链接"
  };
  return statusMap[data] || "未知状态";
}
// 返回数据卷状态颜色
export function volumeStatusColor(data: any) {
  const statusMap = {
    0: "warning", // 未创建
    1: "info", // 未链接
    2: "success" // 已链接
  };
  return statusMap[data] || "default"; // 默认颜色类名
}

// 返回虚拟机内部状态
export function vmStatus(data: any) {
  const vmStatusMap = {
    0: "未知",
    2: "开机",
    3: "关机",
    4: "停止中",
    10: "重启中",
    32768: "暂停中",
    32769: "已暂停"
  };
  return vmStatusMap[data] || "未知状态";
}
// 返回虚拟机内部颜色// 返回虚拟机内部颜色
export function vmStatusColor(data: any) {
  const vmStatusColorMap = {
    0: "default", // 未知
    2: "success", // 运行中
    3: "danger", // 已停止
    4: "warning", // 停止中
    10: "info", // 重启中
    32768: "primary", // 暂停中
    32769: "info" // 已暂停
  };

  return vmStatusColorMap[data] || "default"; // 默认颜色类名
}

// 计算硬盘大小
export function diskSize(gb: number = 1, gbto: number = 1) {
  return `${gb.toFixed(2)}GB/${gbto.toFixed(2)}GB`;
}

// 计算百分比
export function percent(num: number, total: number) {
  const result = (num / total) * 100;
  return parseFloat(result.toFixed(2));
}

// 返回端口信息
export function portInfo(netlist: any) {
  const netNode: any[] = [];
  // 检查 netlist 是否为空数组
  if (Array.isArray(netlist) && netlist.length > 0) {
    netlist.forEach((item: any) => {
      if (item.net && Array.isArray(item.net) && item.net.length > 0) {
        item.net.forEach((nowitem: any) => {
          // 检查 internal_port 是否等于 3389
          if (nowitem.internal_port === 3389) {
            netNode.push({
              id: Math.random(),
              type: "port",
              connect: item.id,
              label: `外部访问端口号\n${nowitem.node_port}`,
              image: "/images/icons/端口.png"
            });
          }
        });
      }
    });
  }
  return netNode;
}
// 返回虚拟机数据卷信息
export function volumeInfo(data: any) {
  const volumeNode: any[] = [];
  // 遍历外层数组
  data.forEach((outerItem: any) => {
    // 检查 outerItem.data 是否包含数据数组
    if (outerItem.data && outerItem.data.length > 0) {
      outerItem.data.forEach((item: any) => {
        // 检查 item.size 是否存在
        if (item.size !== undefined && item.size !== null) {
          volumeNode.push({
            connect: outerItem.id, // 使用外层对象的 id
            id: Math.random(),
            type: "volume",
            label: `数据卷大小\n${item.size}GB`,
            image: "/images/icons/数据卷.png"
          });
        }
      });
    }
  });
  return volumeNode;
}

// 复制文本
export const copyDomText = async (
  text: string,
  title: any = "文本已复制到剪贴板",
  titleErr: any = "无法复制文本: "
) => {
  try {
    if (navigator.clipboard && document.hasFocus()) {
      // 使用现代浏览器的 Clipboard API
      await navigator.clipboard.writeText(text);
      koiMsgSuccess(title);
    } else {
      // 兼容旧浏览器
      const textarea = document.createElement("textarea");
      textarea.value = text;
      document.body.appendChild(textarea);
      textarea.select();
      document.execCommand("copy");
      document.body.removeChild(textarea);
      koiMsgSuccess(title);
    }
  } catch (err) {
    koiMsgError(titleErr + err);
  }
};

// 容器状态
export const containerStatus = (status: number) => {
  const statusMap = {
    0: "未支付",
    1: "未开通",
    2: "开机",
    3: "关机"
  };
  return statusMap[status] || "未知状态";
};

// 容器状态颜色
export const containerStatusColor = (status: number) => {
  const vmStatusColorMap = {
    0: "info",
    2: "success",
    1: "info",
    3: "danger"
  };
  return vmStatusColorMap[status] || "default"; // 默认颜色类名
};
